/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef MongodbModel_h
#define MongodbModel_h
#import <JDCloudOCSDKCharge/JDCloudOCSDKCharge.h>

@interface Backup :NSObject

/// 备份ID
@property (strong,nonatomic,nonnull)  NSString*  backupId;

/// 备份名称
@property (strong,nonatomic,nonnull)  NSString*  backupName;

/// 备份所属实例ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 备份状态，Waiting(等待中)、Running(备份中)、Finished(已完成)、(Failed错误)
@property (strong,nonatomic,nonnull)  NSString*  backupStatus;

/// 备份开始时间
@property (strong,nonatomic,nonnull)  NSString*  backupStartTime;

/// 备份结束时间
@property (strong,nonatomic,nonnull)  NSString*  backupEndTime;

/// 备份模式，Automated(系统自动备份)、Manual(手动备份)
@property (strong,nonatomic,nonnull)  NSString*  backupMode;

/// 整个备份集大小，单位：Byte
@property (strong,nonatomic,nonnull)  NSNumber*  backupSizeByte;


-(id) initWithBackupId:(NSString*) backupId
    backupName:(NSString*)backupName
    instanceId:(NSString*)instanceId
    backupStatus:(NSString*)backupStatus
    backupStartTime:(NSString*)backupStartTime
    backupEndTime:(NSString*)backupEndTime
    backupMode:(NSString*)backupMode
    backupSizeByte:(NSNumber*)backupSizeByte;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface MongodbQuota :NSObject

/// 总配额
@property (strong,nonatomic,nonnull)  NSNumber*  total;

/// 已用
@property (strong,nonatomic,nonnull)  NSNumber*  use;


-(id) initWithTotal:(NSNumber*) total
    use:(NSNumber*)use;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface MongodbInfos :NSObject

/// 实例ID
@property (strong,nonatomic,nonnull)  NSString*  spaceId;

/// 状态描述
@property (strong,nonatomic,nonnull)  NSString*  status;


-(id) initWithSpaceId:(NSString*) spaceId
    status:(NSString*)status;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DBInstanceSpec :NSObject

/// 实例名称，只支持数字、字母、英文下划线、中文，且不少于2字符不超过32字符。
@property (strong,nonatomic,nonnull)  NSString*  instanceName;

/// 数据库类型，MongoDB
@property (strong,nonatomic,nonnull)  NSString*  engine;

/// 数据库版本，3.2
@property (strong,nonatomic,nonnull)  NSString*  engineVersion;

/// 实例规格代码。mongo.s1.small：1核2G;mongo.s1.medium：2核4G;mongo.s1.large：4核8G;mongo.s1.xlarge：8核16G;mongo.s2.2xlarge：8核32G;mongo.s2.4xlarge：16核64G;
@property (strong,nonatomic,nonnull)  NSString*  instanceClass;

/// 存储空间，单位GB，取值10-1000,10的倍数。
@property (strong,nonatomic,nonnull)  NSNumber*  instanceStorageGB;

/// 是否选择多可用区部署
@property (strong,nonatomic,nonnull)  NSNumber*  multiAZ;

/// 可用区ID，必填，第一个ID为primary所在可用区ID，第二个为secondary，第三个为hidden。multiAZ选择是，则primary与secondary的可用区ID需相同，且与hidden不同；multiAZ选择否，三个节点写相同的可用区ID。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  azId;

/// VPCID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 密码，必须包含且只支持字母及数字，不少于8字符不超过16字符。
@property (strong,nonatomic,nonnull)  NSString*  password;

/// 按备份创建使用的具体备份ID
@property (strong,nonatomic,nonnull)  NSString*  backupId;

/// 基于一个实例的备份创建新实例，如填写则restoreTime也需要填写。
@property (strong,nonatomic,nonnull)  NSString*  originDBInstanceId;

/// 用户指定备份保留周期内的任意时间点，如2011-06-11T16:00:00Z，非必填，与backupId互斥。
@property (strong,nonatomic,nonnull)  NSString*  restoreTime;


-(id) initWithInstanceName:(NSString*) instanceName
    engine:(NSString*)engine
    engineVersion:(NSString*)engineVersion
    instanceClass:(NSString*)instanceClass
    instanceStorageGB:(NSNumber*)instanceStorageGB
    multiAZ:(NSNumber*)multiAZ
    azId:(NSArray<NSString*>*)azId
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    password:(NSString*)password
    backupId:(NSString*)backupId
    originDBInstanceId:(NSString*)originDBInstanceId
    restoreTime:(NSString*)restoreTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface BackupSynchronicity :NSObject

/// 跨地域备份同步服务ID
@property (strong,nonatomic,nonnull)  NSString*  serviceId;

/// MongoDB 实例ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// MongoDB 实例名称
@property (strong,nonatomic,nonnull)  NSString*  instanceName;

/// 跨地域备份同步服务状态，正常，running；错误，error
@property (strong,nonatomic,nonnull)  NSString*  serviceStatus;

/// 源实例所在地域
@property (strong,nonatomic,nonnull)  NSString*  srcRegion;

/// 跨地域备份同步服务的目的地域
@property (strong,nonatomic,nonnull)  NSString*  dstRegion;

/// 数据库类型
@property (strong,nonatomic,nonnull)  NSString*  engine;

/// 数据库版本
@property (strong,nonatomic,nonnull)  NSString*  engineVersion;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 跨地域备份的最新数据时间点
@property (strong,nonatomic,nonnull)  NSString*  mongodbNewestDataTime;


-(id) initWithServiceId:(NSString*) serviceId
    instanceId:(NSString*)instanceId
    instanceName:(NSString*)instanceName
    serviceStatus:(NSString*)serviceStatus
    srcRegion:(NSString*)srcRegion
    dstRegion:(NSString*)dstRegion
    engine:(NSString*)engine
    engineVersion:(NSString*)engineVersion
    createTime:(NSString*)createTime
    mongodbNewestDataTime:(NSString*)mongodbNewestDataTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Tag :NSObject

/// Tag键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// Tag值
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithKey:(NSString*) key
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AvailableZones :NSObject

/// 可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 是否可售
@property (strong,nonatomic,nonnull)  NSNumber*  canSale;


-(id) initWithAz:(NSString*) az
    canSale:(NSNumber*)canSale;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Flavor :NSObject

/// CPU核数
@property (strong,nonatomic,nonnull)  NSNumber*  cpu;

/// 内存 ,单位GB
@property (strong,nonatomic,nonnull)  NSNumber*  memory;

/// iops
@property (strong,nonatomic,nonnull)  NSNumber*  iops;

/// 最大连接数
@property (strong,nonatomic,nonnull)  NSNumber*  maxLink;

/// 最大磁盘数,单位GB
@property (strong,nonatomic,nonnull)  NSNumber*  maxDisk;

/// 最下磁盘数,单位GB
@property (strong,nonatomic,nonnull)  NSNumber*  minDisk;

/// 磁盘步长
@property (strong,nonatomic,nonnull)  NSNumber*  diskStep;


-(id) initWithCpu:(NSNumber*) cpu
    memory:(NSNumber*)memory
    iops:(NSNumber*)iops
    maxLink:(NSNumber*)maxLink
    maxDisk:(NSNumber*)maxDisk
    minDisk:(NSNumber*)minDisk
    diskStep:(NSNumber*)diskStep;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SpaceId :NSObject

/// 实例ID
@property (strong,nonatomic,nonnull)  NSString*  spaceIdValue;

/// 状态描述
@property (strong,nonatomic,nonnull)  NSString*  status;


-(id) initWithSpaceIdValue:(NSString*) spaceIdValue
    status:(NSString*)status;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TopologyPair :NSObject

/// 域名
@property (strong,nonatomic,nonnull)  NSString*  domain;

/// ip地址
@property (strong,nonatomic,nonnull)  NSString*  ip;

/// 端口
@property (strong,nonatomic,nonnull)  NSString*  port;


-(id) initWithDomain:(NSString*) domain
    ip:(NSString*)ip
    port:(NSString*)port;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface BackupDownloadURL :NSObject

/// 备份名称
@property (strong,nonatomic,nonnull)  NSString*  backupName;

/// 公网下载链接的地址
@property (strong,nonatomic,nonnull)  NSString*  backupInternetDownloadURL;

/// 内网下载链接的地址
@property (strong,nonatomic,nonnull)  NSString*  backupIntranetDownloadURL;

/// 公网和内网的下载链接过期时间
@property (strong,nonatomic,nonnull)  NSString*  linkExpiredTime;


-(id) initWithBackupName:(NSString*) backupName
    backupInternetDownloadURL:(NSString*)backupInternetDownloadURL
    backupIntranetDownloadURL:(NSString*)backupIntranetDownloadURL
    linkExpiredTime:(NSString*)linkExpiredTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DBInstance :NSObject

/// 实例ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 实例名称
@property (strong,nonatomic,nonnull)  NSString*  instanceName;

/// 数据库类型
@property (strong,nonatomic,nonnull)  NSString*  engine;

/// 数据库版本
@property (strong,nonatomic,nonnull)  NSString*  engineVersion;

/// 实例规格代码
@property (strong,nonatomic,nonnull)  NSString*  instanceClass;

/// 存储空间
@property (strong,nonatomic,nonnull)  NSNumber*  instanceStorageGB;

/// CPU核数
@property (strong,nonatomic,nonnull)  NSNumber*  instanceCPU;

/// 内存，单位GB
@property (strong,nonatomic,nonnull)  NSNumber*  instanceMemoryGB;

/// 可取区ID，依次为主、从、隐藏节点所在可用区
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  azId;

/// VPCID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 副本集名称
@property (strong,nonatomic,nonnull)  NSString*  replicaSetName;

/// 域名
@property (strong,nonatomic,nonnull)  NSString*  instanceDomain;

/// 默认库名
@property (strong,nonatomic,nonnull)  NSString*  dBName;

/// 默认用户名
@property (strong,nonatomic,nonnull)  NSString*  accountName;

/// 应用访问端口
@property (strong,nonatomic,nonnull)  NSString*  instancePort;

/// 实例状态.RUNNING：运行, ERROR：错误 ,BUILDING：创建中, DELETING：删除中, RESTORING：恢复中, RESIZING：变配中
@property (strong,nonatomic,nonnull)  NSString*  instanceStatus;

/// 自动备份保留时间
@property (strong,nonatomic,nonnull)  NSNumber*  backupRetentionPeriod;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 自动备份时间，如：00:00-02:00，表示0点到2点进行数据库自动备份
@property (strong,nonatomic,nonnull)  NSString*  preferredBackupWindow;

/// 系统维护时间，如：00:00-02:00，表示0点到2点进行系统维护
@property (strong,nonatomic,nonnull)  NSString*  preferredmaintenanceWindow;

/// 计费信息
@property (strong,nonatomic,nonnull)  Charge*  charge;

/// 是否设置白名单，true：已设置，false：未设置
@property (strong,nonatomic,nonnull)  NSNumber*  isSetSecurityIps;

/// 标签
@property (strong,nonatomic,nonnull)  NSArray<Tag*>*  tags;


-(id) initWithInstanceId:(NSString*) instanceId
    instanceName:(NSString*)instanceName
    engine:(NSString*)engine
    engineVersion:(NSString*)engineVersion
    instanceClass:(NSString*)instanceClass
    instanceStorageGB:(NSNumber*)instanceStorageGB
    instanceCPU:(NSNumber*)instanceCPU
    instanceMemoryGB:(NSNumber*)instanceMemoryGB
    azId:(NSArray<NSString*>*)azId
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    replicaSetName:(NSString*)replicaSetName
    instanceDomain:(NSString*)instanceDomain
    dBName:(NSString*)dBName
    accountName:(NSString*)accountName
    instancePort:(NSString*)instancePort
    instanceStatus:(NSString*)instanceStatus
    backupRetentionPeriod:(NSNumber*)backupRetentionPeriod
    createTime:(NSString*)createTime
    preferredBackupWindow:(NSString*)preferredBackupWindow
    preferredmaintenanceWindow:(NSString*)preferredmaintenanceWindow
    charge:(Charge*)charge
    isSetSecurityIps:(NSNumber*)isSetSecurityIps
    tags:(NSArray<Tag*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Topology :NSObject

/// 主
@property (strong,nonatomic,nonnull)  TopologyPair*  primary;

/// 备
@property (strong,nonatomic,nonnull)  NSArray<TopologyPair*>*  secondary;

/// 隐藏
@property (strong,nonatomic,nonnull)  NSArray<TopologyPair*>*  hidden;


-(id) initWithPrimary:(TopologyPair*) primary
    secondary:(NSArray<TopologyPair*>*)secondary
    hidden:(NSArray<TopologyPair*>*)hidden;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* MongodbModel_h */
